package app;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.List;

import InterfazRemota.InterfazRemota;
import Managment.ManagmentEmpleado;
import Managment.ManagmentLocal;
import Managment.ManagmentMesa;
import Managment.ManagmentPedido;
import Managment.ManagmentPlato;
import NegocioVO.ComandaVO;
import NegocioVO.EmpleadoVO;
import NegocioVO.LocalVO;
import NegocioVO.MesaVO;
import NegocioVO.PlatoVO;
import bean.MesaBean;


public class Controlador extends UnicastRemoteObject implements InterfazRemota{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private static Controlador instancia;
	
	public Controlador() throws RemoteException {
		super();
		// TODO Auto-generated constructor stub
	}

	public static Controlador getInstancia() throws RemoteException{
		if(instancia == null)
			instancia = new Controlador();
		return instancia;
	}
	
	@Override
	public List<MesaVO> listarMesasDisponibles (int LocalId) throws RemoteException
	{
		List<MesaVO> lista = ManagmentMesa.getInstancia().listarMesasDisponibles(LocalId);
		return lista;
	}

	
	
	@Override
	public void AbrirMesa(List<MesaVO> mesasVo) throws RemoteException{
		List<MesaBean> mesas = ManagmentMesa.getInstancia().VoAHibernateLista(mesasVo);
		ManagmentMesa.getInstancia().AbrirMesa(mesas);
	}
	
	@Override
	public List<MesaVO> listarMesasOcupadas (int j) throws RemoteException
	{
		List<MesaVO> lista = ManagmentMesa.getInstancia().listarMesasOcupadas(j);
		return lista;
	}
	
	@Override
	public List<LocalVO> listarLocales () throws RemoteException
	{
		List<LocalVO> lista = ManagmentLocal.getInstancia().listarLocalesDisponibles();
		return lista;
	}
	
	@Override
	public void AltaPedido(List<ComandaVO> comandas, int nromesa, int nroMozo) throws RemoteException
	{
		ManagmentPedido.getInstancia().AltaPedido(comandas, nromesa, nroMozo);
	}
	
	@Override
	public boolean authenticateUser(String UserID, String PassWord) 
	{
		return ManagmentEmpleado.getInstancia().authenticateUser(UserID, PassWord);
	}
	
	@Override
	public List<EmpleadoVO> listarMozosDisponibles (int IdLocal) throws RemoteException
	{
		List<EmpleadoVO> lista = ManagmentEmpleado.getInstancia().listarMozoDisponiblesLocal(IdLocal);
		return lista;
	}
	
	@Override
	public Integer BuscarLocalId(String userID, String passWord) throws RemoteException
	{
		return ManagmentEmpleado.getInstancia().BuscarLocalId(userID, passWord);
	}

	@Override
	public void CerrarMesas(List<MesaVO> mesas) {
		List<MesaBean> mesasb = ManagmentMesa.getInstancia().VoAHibernateLista(mesas);
		ManagmentMesa.getInstancia().CerrarMesas(mesasb);
		
	}

	@Override
	public List<ComandaVO> listarPlatosDisponibles(int Local) throws RemoteException {
		return ManagmentPlato.getInstancia().listarPlatosDisponibles(Local);
	}
}
